﻿//#include<iostream>
//using namespace std;
//
//class A
//{
//public:
//    A(int a = 0)
//        :_a(a)
//    {
//        cout << "A(int a)" << endl;
//    }
//
//    A(const A& aa)
//        :_a(aa._a)
//    {
//        cout << "A(const A& aa)" << endl;
//    }
//
//    A& operator=(const A& aa)
//    {
//        cout << "A& operator=(const A& aa)" << endl;
//
//        if (this != &aa)
//        {
//            _a = aa._a;
//        }
//
//        return *this;
//    }
//
//    ~A()
//    {
//        cout << "~A()" << endl;
//    }
//private:
//    int _a;
//};
//
//class B
//{
//public:
//    B(int a = 0)
//        :_a(a)
//    {
//        cout << "B(int a)" << endl;
//    }
//
//    B(const B& aa)
//        :_a(aa._a)
//    {
//        cout << "B(const A& aa)" << endl;
//    }
//
//    B& operator=(const B& aa)
//    {
//        cout << "B& operator=(const A& aa)" << endl;
//
//        if (this != &aa)
//        {
//            _a = aa._a;
//        }
//
//        return *this;
//    }
//
//    ~B()
//    {
//        cout << "~B()" << endl;
//    }
//private:
//    int _a;
//};
//
//class C
//{
//public:
//    C(int a = 0)
//        :_a(a)
//    {
//        cout << "C(int a)" << endl;
//    }
//
//    C(const C& aa)
//        :_a(aa._a)
//    {
//        cout << "C(const A& aa)" << endl;
//    }
//
//    C operator=(const C& aa)
//    {
//        cout << "C& operator=(const A& aa)" << endl;
//
//        if (this != &aa)
//        {
//            _a = aa._a;
//        }
//
//        return *this;
//    }
//
//    ~C()
//    {
//        cout << "~C()" << endl;
//    }
//private:
//    int _a;
//};
//
////﻿﻿﻿A c;
//
//void main()
//
//{
//   A* p = new A[100];
//    delete[] p;
//
//}

//#include<iostream>
//using namespace std;
//class Solution {
//public:
//    int firstUniqChar(string s) {
//        int Counta[30] = { 0 };
//        for (int i = 0; i < s.size(); i++)
//        {
//            Counta[s[i] - 'a']++;
//        }
//        for (int i = 0; i < s.size(); i++)
//        {
//            if (Counta[s[i]-'a'] == 1)
//            {
//                return i;
//            }
//        }
//        return -1;
//    }
//};
//int main()
//{
//    Solution a;
//    a.firstUniqChar("leetcode");
//    return 0;
//}
//
//class Solution {
//public:
//    int myAtoi(string str) {
//        int sign = 1;
//        int num = 0;
//        int i = 0;
//        int len = str.size();
//        int bnary = INT_MAX / 10;
//
//        while (str[i] == ' ')
//        {
//            if (++i == len)
//                return 0;
//        }
//
//        if (str[i] == '-')
//        {
//            sign = -1;
//        }
//        if (str[i] == '-' || str[i] == '+')
//        {
//            i++;
//        }
//
//        for (int j = i; j < len; j++)
//        {
//            if (str[j] < '0' || str[j]>'9')
//            {
//                break;
//            }
//            if (num > bnary || num == bnary && str[j] > '7')
//            {
//                return sign == 1 ? INT_MAX : INT_MIN;
//            }
//            num = 10 * num + (str[j] - '0');
//        }
//        return sign * num;
//    }
//};
//
//#include<algorithm>
//class Solution {
//public:
//    int Additem(int a, int b, int& sign)
//    {
//        int sum = a + b + sign;
//        if (sum >= 10)
//        {
//            sum -= 10;
//            sign = 1;
//        }
//        else
//            sign = 0;
//        return sum;
//    }
//    string addStrings(string num1, string num2) {
//        //逆置
//        //对应相加
//        //逆置
//        reverse(num1.begin(), num1.end());
//        reverse(num2.begin(), num2.end());
//        int i, j, sign;
//        i = 0, j = 0, sign = 0;
//        int sum = 0;
//        string res;
//        while (i < num1.size() && j < num2.size())
//        {
//            sum = Additem(num1[i] - '0', num2[j] - '0', sign);
//            res.push_back(sum + '0');
//            i++;
//            j++;
//        }
//        while (i < num1.size())
//        {
//            sum = Additem(num1[i] - '0', 0, sign);
//            res.push_back(sum + '0');
//            i++;
//        }
//
//
//        while (j < num2.size())
//        {
//            sum = Additem(0, num2[j] - '0', sign);
//            res.push_back(sum + '0');
//            j++;
//        }
//
//        if (sign > 0)
//        {
//            res.push_back(sign + '0');
//        }
//        reverse(res.begin(), res.end());
//        return res;
//    }
//
//
//
//
//};

//class Solution {
//public:
//    int firstUniqChar(string s) {
//        int Counta[30] = { 0 };
//        for (int i = 0; i < s.size(); i++)
//        {
//            Counta[s[i] - 'a']++;
//        }
//        for (int i = 0; i < s.size(); i++)
//        {
//            if (Counta[s[i] - 'a'] == 1)
//            {
//                return i;
//            }
//        }
//        return -1;
//    }
//};

//class Solution {
//public:
//    void reverseString(vector<char>& s) {
//        int left = 0, right = s.size() - 1;
//        while (left < right)
//        {
//            swap(s[left], s[right]);
//            left++;
//            right--;
//        }
//    }
//};